from my_tools import *

#房屋菜单显示
def main_menu():
    """
    显示主菜单，让用户选择
    :return
    """
    print()
    print("房屋出租系统菜单".center(32 , "="))
    print("\t\t\t1.新 增 房 源")
    print("\t\t\t2.查 找 房 源")
    print("\t\t\t3.删 除 房 屋 信 息")
    print("\t\t\t4.修 改 房 屋 信 息")
    print("\t\t\t5.房 屋 列 表")
    print("\t\t\t6.退 出")




"""
1.使用字典来存储房屋信息
2.一个字段对象就对应一个房屋信息
3.多个字段/房屋信息,就放到list中进行管理
4.设置houses_list=[{"id" : 2 , "name" : "tim" , "phone" : "113" , "address" : "海淀区" , "rent" ："1600" , "state" : "未出租"}]
"""
houses = [{"id" : 1 , "name" : "tim" , "phone" : "113" , "address" : "海淀区" , "rent" :"1600" , "state" : "未出租"}]
def list_houses ():
    """
    显示房屋列表
    """
    print("房屋列表".center(60 , "="))
    #打印表头信息
    print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)")
    #遍历这个houses这个列表
    #去除的House就是一个字段
    #{"id" : 2 , "name" : "tim" , "phone" : "113" , "address" : "海淀区" , "rent" :"1600" , "state" : "未出租"}
    for house in houses:
        #取出house中的value，并且进行遍历显示
        for value in house.values():
            print(value , end="\t\t\t")
        #输出一个完整的house信息之后,就换行
        print()
    print("房屋列表显示完毕".center(60 , "="))


#全局变量 id_counter , 记录当前房屋的
id_counter = 1
def add_house():
    """
        添加房屋信息
    """
    print("添加房屋".center(32 , "="))
    name = input("姓名:")
    phone = input("电话:")
    address = input("地址:")
    rent = int(input("租金"))
    state = input("状态:")
    #由系统分配添加房屋的id
    #将 id_counter做成全局的,增加,减少都是使用的这个字段
    #每添加一个房屋，id就加1
    global id_counter
    id_counter += 1
    #构建房屋信息对应的字典,加入到全局houses列表
    house = {"id" : id_counter , "name" : name , "phone" : phone
             ,"address" : address , "rent" : rent , "state" : state}
    #添加房屋信息
    houses.append(house)
    print("添加房屋成功".center(32 , "="))




#删除房屋
def del_house():
    """
    根据id删除房屋信息
    """
    print("删除房屋信息".center(32 , "="))
    del_id = int(input("请输入待删除房屋的编号(-1退出):"))
    if del_id == -1:
        print("放弃删除房屋信息".center(32 , "="))
        return
    key = read_confirm_select()
    if key == 'y':#如果真的要删除
        #根据del_id去列表中查找是否存在当前的房源
        house = find_by_id(del_id)
        if house:
            #指定删除操作, 根据内容进行删除
            houses.remove(house)
            print("删除房屋信息成功".center(32 , "="))
        else:
            print("房屋编号不存在,删除失败...")
    else:
        print("放弃删除房屋信息".center(32 , "="))




def find_by_id(find_id):
    """
    根据输入的find_id返回对应的房屋信息(字典)
    """
    #遍历houses列表元素
    for house in houses:
        if house["id"] == find_id:
            return house
    #这个返回None也是可以不写的,因为默认就是返回None
    return None


#退出系统的判断
def exit_sys():
    """
    完成退出系统,并确认(Y/N)
    如果确认退出返回True,否则返回False
    """
    choice = read_confirm_select()
    if choice == 'y':
        return True
    else:
        return False



#查找房源
def find_house():
    print("查找房屋信息".center(32 , "="))
    key = int(input("请输入要查找的id："))
    #根据id查找房屋
    house = find_by_id(key)
    #如果房屋找到了
    if house:
        print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)")
        for info in house.values():
            print(info , end="\t\t\t")
        print()
    else:
        print(f"查找房屋信息id{key}不存在".center(32 , "="))


#修改房屋信息
def update():
    """
    修改房屋信息
    """
    update_id = int(input("请选择修改的房屋编号(-1表示退出):"))
    if update_id == -1:
        print("你放弃修改房屋信息".center(32 , "="))
        return
    #根据id查找对应的房屋信息(字典)
    house = find_by_id(update_id)
    #如果房屋信息不存在
    if not house:
        print("没有要修改的房屋信息".center(32 , "="))
        return

    #注意，用户如果直接回车,代表不修改当前这个信息，保持原样就可以
    # name = input(f"姓名({house['name']}):")
    # if len(name) > 0:#如果用户输入的有内容
    #     #表示将接收到的name赋值给house字典 key="name"对应的值
    #     house['name'] = name
    #
    house['name'] = read_str(f"姓名({house['name']}):" , house['name'])
    # phone = input(f"电话({house['phone']}):")
    # if len(phone) > 0:
    #     house['phone'] = phone
    #
    house['phone'] = read_str(f"电话({house['phone']}):", house['phone'])
    # address = input(f"地址({house['address']}):")
    # if len(address) > 0:
    #     house['address'] = address
    #
    house['address'] = read_str(f"地址({house['address']}):" , house['address'])
    # rent = input(f"租金({house['rent']})")
    # if len(rent) > 0:
    #     house['rent'] = int(rent)
    #
    house['rent'] = read_str(f"租金({house['rent']}):", house['rent'])
    # state = input(f"状态({house['state']}):")
    # if len(state) > 0:
    #     house['state'] = state
    house['state'] = read_str(f"状态({house['state']}):", house['state'])
    print("修改房屋信息成功".center(32 , "="))



if __name__ == "__main__":
    main_menu()